A general communications network comprises a collection of terminal nodes networked together via communications links and intermediate nodes to facilitate message and data communications between or amongst the terminal nodes. For example, a computer network is a communications network of computer terminal nodes networked together via communications links and intermediate nodes to facilitate data exchanges between or amongst the computer terminal nodes. Further, a wide area network (WAN) is a computer network that spans or covers a broad area (e.g., a communications network that spans across metropolitan or regional areas). The Internet is an interactive global system of interconnected computer networks.
In computer networking, a “port” serves as an application-specific or process-specific software construct serving as a communications network endpoint of a terminal node, which is associated with an IP address of the host node and the specific communications protocol. A computer terminal of a network may share a single physical connection to the network (e.g., a packet-switched network, such as the Internet), and each port of the computer uniquely identifies a respective different application or process running on the computer. Certain transport layer protocols of the Internet (e.g., Transmission Control Protocol (TCP) and User Datagram Protocol (UDP)) reflect protocols that primarily use ports that are identified for each address and protocol by a port number. The port number, along with the IP address of the host computer, form the destination address for a communications session. For example, data packets are routed across the network to a specific destination IP address for the host computer, and then to the specific destination port number associated with the respective process or application of the host computer.
TCP is a core protocol of the Internet protocol (IP) suite, which provides reliable, ordered and error-checked delivery of a stream of packets between programs running on computers connected to the Internet. Web browsers use TCP when they connect to servers on the Internet, and it is used to deliver email and transfer files from one location to another. To establish a connection, TCP uses a three-way handshake. The server to which the client connects binds to and listen at one or more ports for TCP connections. To establish a TCP connection, the client first transmits a TCP synchronize message (SYN) to the server. The client sets a random value A as the sequence number for the SYN segment. Upon receiving the TCP SYN message, the server replies with a synchronize acknowledge (SYN-ACK) message. The server sets a sequence number for the acknowledgment segment to the value of the SYN sequence number plus one (A+1), and sets another random number B as the sequence number for the SYN-ACK packet. Finally, upon receiving the SYN-ACK, the client replies with an acknowledge (ACK) message back to the server. The client sets a sequence number for the ACK segment to the same value of the received SYN-ACK segment (A+1), and sets the sequence number for the ACK packet to the sequence number value of the SYN-ACK packet plus one (B+1). At this point, both the client and server have received an acknowledgment of the connection, and a full-duplex communications connection is established. The first and second steps (the SYN and SYN-ACK steps) establish the connection parameter (sequence number) for one direction and it is acknowledged. The second and third steps (the SYN-ACK and ACK steps) establish the connection parameter (sequence number) for the other direction and it is acknowledged. Resources (e.g., web servers and services) connected to the Internet are identified via the Domain Name System (DNS), which serves as a hierarchical distributed naming system. The DNS associates various information with respective domain names assigned to Internet resource entities. For example, the Internet DNS associates domain names to respective associated numerical IP addresses for the targeted or destination resources connected to the Internet.
Web pages accessed over the Internet are generally serviced via Hypertext Transfer Protocol (HTTP) and Hypertext Transfer Protocol Secure (HTTPS), which function as request-response protocols for interactive communication over computer networks (HTTPS providing secure network communications). Further, HTTP and HTTPS function as client-server based communications protocols, where, for example, a web-browser application running on a one terminal node serves as the client node, and a web-site hosted on another terminal node serves as the server node. Web pages serviced by HTTP or HTTPS typically utilize ports 80 and 443. Simple Mail Transfer Protocol (SMPT) is a network protocol for electronic mail (e-mail) transmission, Post Office Protocol (POP3) is an application-layer network protocol used by local e-mail clients to retrieve e-mail from a remote server, and Internet Message Access Protocol (IMAP) is a network protocol for e-mail retrieval and storage. Further, File Transfer Protocol (FTP) is a network protocol used to transfer computer files from one network host to another, Secure Shell (SSH) is a cryptographic network protocol for initiating secure text-based shell sessions on remote network hosts, and Telnet is an application protocol used to provide a bidirectional interactive text-oriented communication facility over a network. HTTP, HTTPS, SMTP, POP3, IMAP, SSH, FTP, Telnet and a variety of other protocols are typically employed over TCP-based networks, such as the Internet, and are thus encapsulated in TCP. When a user node (e.g., a computer terminal node running a web browser) seeks to access a web page, the following steps are involved: (1) a DNS request to obtain the IP address for the hosting node (the IP address is returned via a DNS response); (2) a TCP request to the IP address obtained via the DNS response on the appropriate port; and (3) a GET request, within the HTTP of HTTPS portion of the protocol running over TCP, containing a user agent string providing information regarding the device making the request.
Web page data is typically transferred transparently through a customer premise WAN device (e.g., a terminal node) without interception. Exceptions, however, exist where data may be intercepted, such as (a) when all traffic is captured such as in a login case for a guest or pay network (e.g., a WiFi network) and (b) where acceleration is applied to the web page data, providing the original content in a performance enhanced manner. Further, terminals often host their own HTTP/HTTPS pages for a specific domain name or IP address associated with the LAN port of that terminal. Such pages are served to the requesting browser application independently of the access of other HTTP/HTTPS pages on the Internet.
In various instances, when operating and providing a communications service (e.g., an Internet service provider (ISP) service), there is a desire or need to provide specific or targeted messaging to the end user, for example, based on an associated status of the network or user account (e.g., messages regarding the state of the network, the state of the local terminal, or status information regarding the user account). Currently, such messaging is primarily provided via one of the following methods: (1) the user receives the message when going to the HTTP/HTTPS server of the terminal; (2) the user receives the message via an email communication; (3) a user web page request is redirected by a central device; or (4) the user accesses the message on a message board or other HTTP/HTTPS server hosted by the ISP. These methods, however, are subject to various deficiencies and inefficiencies. For example, in the case of receiving the messaging via the HTTP/HTTPS server of the terminal or other server hosted by the ISP, the user may access such resources on a very infrequent basis, and thus the ISP cannot be assured of prompt or reliable delivery. Further, in the case of email delivery, email messaging is not real-time, and thus the ISP cannot be assured of prompt delivery in conjunction with an associated status that may be the topic of the messaging. Moreover, in the cases of an HTTP/HTTPS server of the terminal, email messaging, redirection by a central device and messaging via a server hosted by the ISP, such methods require an active and properly functioning WAN connection, and thus (especially with respect to messaging regarding network status, such as a network outage) such messaging would not reach the user in a timely fashion.
What is needed, therefore, is an approach for reliable and timely provision of targeted, status-based messaging to a user-terminal node in a computer network, such as a wide area resource-based network (e.g., the Internet).
Some Example Embodiments
Embodiments of the present invention advantageously address the foregoing requirements and needs, as well as others, by providing an approach for reliable and timely provision of targeted, status-based messaging to a user-terminal node in a computer network, such as a wide area resource-based network (e.g., the Internet).
In accordance with example embodiments of the present invention, TCP connections to certain ports (e.g., nominally ports 80 and 443) are intercepted for the provision of targeted, status-based messaging when certain circumstances associated with the messaging are present, and when certain additional conditions are met (e.g., a timer condition or other predefined condition meeting certain criteria, such as a periodic connection of a predefined period, etc.). In accordance with further example embodiments, such messaging may also be restricted to interactive connections by determining that there is a GET message from a user agent string that is likely to be a browser, which (in addition to providing a better opportunity for actually getting interactive web traffic versus non-interactive web traffic) provides benefits over DNS based solutions, because the customer premise WAN device sees all TCP traffic, but may not see a DNS request if the host terminal or a premise router performs DNS caching. By way of example, scenarios where a web request (e.g., a request on port 80, 443 or other configured port) would be intercepted to provide such targeted, status-based messaging include: (1) Account Volume State—when a user account is approaching or has exceeded a data quota, such as a maximum data volume plan; (2) Maintenance—when a planned outage is scheduled; (3) Outage—when the WAN link is currently out or degraded; and (4) Account State—when key information about a user account needs to be proactively communicated.
In accordance with example embodiments, a method comprises receiving, by a terminal node, a message originating from a client terminal, wherein the terminal node serves as an entry point to, and services data communications connections over, a wide area network (WAN) for the client terminal. It is determined that the message comprises an initiation request for establishing a data communications connection over the wide area network between the client terminal and a remote server, and that an intercept state is in effect. The data communications connection is established as a local connection between the client terminal and the terminal node. The data communications connection is serviced via a local server function, wherein the servicing of the data communications connection via the local server function comprises a provision of status-based messaging to the client terminal. By way of example, the status based messaging comprises information regarding one or more of status of potential communications links between the client terminal and the WAN, status of the WAN, status of a subscription or other account associated with the client terminal, promotions or other services or items of interest relevant to a subscriber associated with the client terminal, and other issues relevant to the client terminal or to a subscriber associated with the client terminal. According to a further aspect, upon determining that the intercept state is in effect, it is determined that a port associated with the requested data communications connection is configured as a port subject to the intercept state. According to a further aspect, upon determining that the intercept state is in effect, it is determined that an intercept frequency parameter is satisfied. Further, upon determining that the intercept frequency parameter is satisfied, it is determined that a port associated with the requested data communications connection is configured as a port subject to the intercept state.
In accordance with further embodiments of the method, upon establishing the data communications connection as a local connection between the client terminal and the terminal node, a protocol session is established over the data communications connection. A further message is received from the client terminal via the protocol session requesting a service associated with the remote server. The method then proceeds with the servicing of the data communications connection via the local server function. According to a further aspect, upon receiving the further message from the client terminal via the protocol session requesting the service associated with the remote server, it is determined that the requested service is an interactive service. The method then proceeds with the servicing of the data communications connection via the local server function.
In accordance with further embodiments of the method, upon establishing the data communications connection as a local connection between the client terminal and the terminal node, a protocol session is established over the data communications connection, and a further message originating from the client terminal is received via the protocol session. It is then determined whether the further message comprises a request for a particular service associated with the remote server. If it is determined that the further message does not comprise the request for the particular service, then the method further comprises routing the data communications connection to the remote server as originally requested. Otherwise, if it is determined that the further message comprises the request for the particular service, then the method further comprises proceeding with the servicing of the data communications connection via the local server function. According to a further aspect, if it is determined that the further message comprises the request for the particular service, before proceeding with the servicing of the data communications connection via the local server function, the method further comprises determining whether the service is an interactive service. If it is determined that the service is not an interactive service, then the method further comprises routing the data communications connection to the remote server as originally requested. Otherwise, if it is determined that the service is an interactive service, then the method proceeds with the servicing of the data communications connection via the local server function.
In accordance with example embodiments, a communications terminal node comprises a receiver configured to receive a message originating from a client terminal, wherein the terminal node serves as an entry point to, and services data communications connections over, a wide area network (WAN) for the client terminal; and a communications processor configured to determine that the message comprises an initiation request for establishing a data communications connection over the wide area network between the client terminal and a remote server, and to determine that an intercept state is in effect. Upon determining that the message comprises the initiation request and that the intercept state is in effect, the communications processor is configured to establish the data communications connection as a local connection between the client terminal and the terminal node, and to service the data communications connection via a local server function, wherein the servicing of the data communications connection via the local server function comprises a provision of status-based messaging to the client terminal. By way of example, the status based messaging comprises information regarding one or more of status of potential communications links between the client terminal and the WAN, status of the WAN, status of a subscription or other account associated with the client terminal, promotions or other services or items of interest relevant to a subscriber associated with the client terminal, and other issues relevant to the client terminal or to a subscriber associated with the client terminal. According to a further aspect, upon determining that the intercept state is in effect, the communications processor is configured to determine that a port associated with the requested data communications connection is configured as a port subject to the intercept state. According to a further aspect, upon determining that the intercept state is in effect, the communications processor is configured to determine that an intercept frequency parameter is satisfied. Further, upon determining that the intercept frequency parameter is satisfied, the communications processor is configured to determine that a port associated with the requested data communications connection is configured as a port subject to the intercept state.
In accordance with further embodiments of the terminal node, upon establishing the data communications connection as a local connection between the client terminal and the terminal node, the communications processor is configured to establish a protocol session over the data communications connection, and the receiver is configured to receive a further message from the client terminal via the protocol session requesting a service associated with the remote server. Upon the receipt of the further message requesting the service associated with the remote server, the communications processor is configured to proceed with the servicing of the data communications connection via the local server function. According to a further aspect, upon receiving the further message from the client terminal via the protocol session requesting the service associated with the remote server, the communications processor is configured to determine that the requested service is an interactive service, and to then proceed with the servicing of the data communications connection via the local server function.
In accordance with further embodiments of the terminal node, upon establishing the data communications connection as a local connection between the client terminal and the terminal node the communications processor is configured to establish a protocol session over the data communications connection, and the receiver is configured to receive a further message originating from the client terminal via the protocol session. Upon the receipt of the further message originating from the client terminal via the protocol session, the communications processor is configured to determine whether the further message comprises a request for a particular service associated with the remote server. If the communications processor determines that the further message does not comprise the request for the particular service, then the communications processor is configured to route the data communications connection to the remote server as originally requested. Otherwise, if the communications processor determines that the further message comprises the request for the particular service, then the communications processor is configured to proceed with the servicing of the data communications connection via the local server function. According to a further aspect, if the communications processor determines that the further message comprises the request for the particular service, before proceeding with the servicing of the data communications connection via the local server function, the communications processor is configured to determine whether the service is an interactive service. If the communications processor determines that the service is not an interactive service, then the communications processor is configured to route the data communications connection to the remote server as originally requested. Otherwise, if the communications processor determines that the service is an interactive service, then the communications processor is configured to proceed with the servicing of the data communications connection via the local server function.
Still other aspects, features, and advantages of embodiments of the present invention are readily apparent from the following detailed description, simply by illustrating a number of particular embodiments and implementations, including the best mode contemplated for carrying out the present invention. The present invention may be realized via other and different embodiments, and its several details can be modified in various obvious respects, all without departing from the spirit and scope of the present invention. Accordingly, the drawing and description are to be regarded as illustrative in nature, and not as restrictive.